<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/10/29/029
 * Time: 11:20
 */
namespace app\api\controller;
use think\Db;
use think\Request;
use think\Session;
class Basic extends Rest
{

    public function saveloca()
    {
        if (1 != self::check_power(1)) {
            return $this->data;
        }
        $request = Request::instance();
        $data = $request->param();
        $locationX = $data['locationX'];
        $locationY = $data['locationY'];
        $userType = $data['userType'];
        $studentId = Session::get("user");
        $signId = $data['signId'];
        $username = Db::name("userinfo")->where(["StudentID" => $studentId])->find();
        $data = [
            "studentid" => $studentId,
            "name" => $username['Name'],
            "locationX" => $locationX,
            "locationY" => $locationY,
            "usertype" => $userType,
            "beginId" => $signId,
            "date_time" => date("Y-m-d H:i:s", time())
        ];
         $result = Db::name("location")->insertGetId($data);
        if($result){
            $this->data['code'] = 1;
            $this->data['msg'] = "存储地理位置成功";
        }else{
            $this->data['code'] = 0;
            $this->data['msg'] = "存储地理位置失败";
        }
        return $this->data;
    }


    public function checksession(){
        if(!session('user')){
           $this->data['code'] = 0;
        }else{
            $this->data['code'] = 1;
        }
        return $this->data;
    }

    public function beginloca()
    {
        if (1 != self::check_power(1)) {
            return $this->data;
        }
        $request = Request::instance();
        $data = $request->param();
        $locationX = $data['locationX'];
        $locationY = $data['locationY'];
        $userType = $data['userType'];
        $studentId = Session::get("user");
        $username = Db::name("userinfo")->where(["StudentID" => $studentId])->find();
        $userposition = Db::name("userinfo")->where(["StudentID" => $studentId])->find("Position");
        $code = rand(100000, 999999);
        if ($userposition <= 13) {
            $data = [
                "studentid" => $studentId,
                "name" => $username['Name'],
                "locationX" => $locationX,
                "locationY" => $locationY,
                "usertype" => $userType,
                "date_time" => date("Y-m-d H:i:s", time()),
                "signpassword" =>md5(md5($code."sign"))
            ];
            $result = Db::name("beginlocation")->insertGetId($data);
            $resultdata = [
                "signpassword" => $code
            ];
            if ($result) {
                $this->data['code'] = 1;
                $this->data['msg'] = "发布签到成功，请将签到密码告知到会人员";
                $this->data['data'] = $resultdata;
            }
        } else {
            $this->data['code'] = 0;
            $this->data['msg'] = "您没有发布签到的权限";
        }
        return $this->data;
    }
    public function checkLoca()
    {
        if (1 != self::check_power(1)) {
            return $this->data;
        }
        $request = Request::instance();
        $data = $request->param();
        $studentId =  Session::get("user");
        $signId = $data['signId'];
        $signpassword = $data['signpassword'];
        $emptysign = Db::name("beginlocation")->where(["id" => $signId])->find();
        if ($emptysign) {
            $data_stu = Db::name("beginlocation")->where(["id" => $signId])->find();
            $meettingsignpassword = Db::name("beginlocation")->where(["id" => $signId])->find();
            $locationX =Db::name("beginlocation")->where(["id" => $signId])->find("locationX");;
            $locationY = Db::name("beginlocation")->where(["id" => $signId])->find("locationY");
            $locationX1 =Db::name("location")->where(["StudentID" => $studentId,"beginId"=>$signId])->find("locationX");;
            $locationY1 = Db::name("location")->where(["StudentID" => $studentId,"beginId"=>$signId])->find("locationY");
            if ($meettingsignpassword["signpassword"] === md5(md5($signpassword."sign"))) {
                switch ($data_stu['data_stu']) {
                    case 0:
                        $distance = get_distance($locationX,$locationY,$locationX1,$locationY1);
                        if ($distance > 5) {
                            $this->data['code'] = 0;
                            $this->data['msg'] = "你当前不在签到范围内，请及时赶到会议地点开会";
                        } else {
                            $this->data['code'] = 0;
                            $this->data['msg'] = "签到已结束,你已迟到！请将手机调成静音模式或关机！".$distance;
                        }
                        break;
                    case 1:
                        $distance = get_distance($locationX,$locationY,$locationX1,$locationY1);
                        if ($distance > 5) {
                            $this->data['code'] = 0;
                            $this->data['msg'] = "你当前不在签到范围内，请及时赶到会议地点开会";
                        } else {
                            $this->data['code'] = 0;
                            $this->data['msg'] = "签到成功！请将手机调成静音模式或关机！";
                        }
                        break;
                }
            } else {
                $this->data['code'] = 0;
                $this->data['msg'] = "签到密码错误";
            }
        } else {
            $this->data['code'] = 0;
            $this->data['msg'] = "当前没有签到发布";
        }
        return $this->data;
    }


    public function getPdf(){
        $pdf = new \TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

// set document information
        $pdf->SetCreator(PDF_CREATOR);
        $pdf->SetAuthor('Nicola Asuni');
        $pdf->SetTitle('TCPDF Example 012');
        $pdf->SetSubject('TCPDF Tutorial');
        $pdf->SetKeywords('TCPDF, PDF, example, test, guide');

// disable header and footer
        $pdf->setPrintHeader(false);
        $pdf->setPrintFooter(false);

// set default monospaced font
        $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

// set margins
        $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);

// set auto page breaks
        $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

// set image scale factor
        $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

// set some language-dependent strings (optional)
        if (@file_exists(dirname(__FILE__).'/lang/eng.php')) {
            require_once(dirname(__FILE__).'/lang/eng.php');
            $pdf->setLanguageArray($l);
        }

// ---------------------------------------------------------

// set font
        $pdf->SetFont('helvetica', '', 10);

// add a page
        $pdf->AddPage();

        $style = array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => '10,20,5,10', 'phase' => 10, 'color' => array(255, 0, 0));
        $style2 = array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(255, 0, 0));
        $style3 = array('width' => 1, 'cap' => 'round', 'join' => 'round', 'dash' => '2,10', 'color' => array(255, 0, 0));
        $style4 = array('L' => 0,
            'T' => array('width' => 0.25, 'cap' => 'butt', 'join' => 'miter', 'dash' => '20,10', 'phase' => 10, 'color' => array(100, 100, 255)),
            'R' => array('width' => 0.50, 'cap' => 'round', 'join' => 'miter', 'dash' => 0, 'color' => array(50, 50, 127)),
            'B' => array('width' => 0.75, 'cap' => 'square', 'join' => 'miter', 'dash' => '30,10,5,10'));
        $style5 = array('width' => 0.25, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 64, 128));
        $style6 = array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => '10,10', 'color' => array(0, 128, 0));
        $style7 = array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(255, 128, 0));

// Line
        $pdf->Text(5, 4, 'Line examples');
        $pdf->Line(5, 10, 80, 30, $style);
        $pdf->Line(5, 10, 5, 30, $style2);
        $pdf->Line(5, 10, 80, 10, $style3);

// Rect
        $pdf->Text(100, 4, 'Rectangle examples');
        $pdf->Rect(100, 10, 40, 20, 'DF', $style4, array(220, 220, 200));
        $pdf->Rect(145, 10, 40, 20, 'D', array('all' => $style3));

// Curve
        $pdf->Text(5, 34, 'Curve examples');
        $pdf->Curve(5, 40, 30, 55, 70, 45, 60, 75, null, $style6);
        $pdf->Curve(80, 40, 70, 75, 150, 45, 100, 75, 'F', $style6);
        $pdf->Curve(140, 40, 150, 55, 180, 45, 200, 75, 'DF', $style6, array(200, 220, 200));

// Circle and ellipse
        $pdf->Text(5, 79, 'Circle and ellipse examples');
        $pdf->SetLineStyle($style5);
        $pdf->Circle(25,105,20);
        $pdf->Circle(25,105,10, 90, 180, null, $style6);
        $pdf->Circle(25,105,10, 270, 360, 'F');
        $pdf->Circle(25,105,10, 270, 360, 'C', $style6);

        $pdf->SetLineStyle($style5);
        $pdf->Ellipse(100,103,40,20);
        $pdf->Ellipse(100,105,20,10, 0, 90, 180, null, $style6);
        $pdf->Ellipse(100,105,20,10, 0, 270, 360, 'DF', $style6);

        $pdf->SetLineStyle($style5);
        $pdf->Ellipse(175,103,30,15,45);
        $pdf->Ellipse(175,105,15,7.50, 45, 90, 180, null, $style6);
        $pdf->Ellipse(175,105,15,7.50, 45, 270, 360, 'F', $style6, array(220, 200, 200));

// Polygon
        $pdf->Text(5, 129, 'Polygon examples');
        $pdf->SetLineStyle(array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0)));
        $pdf->Polygon(array(5,135,45,135,15,165));
        $pdf->Polygon(array(60,135,80,135,80,155,70,165,50,155), 'DF', array($style6, $style7, $style7, 0, $style6), array(220, 200, 200));
        $pdf->Polygon(array(120,135,140,135,150,155,110,155), 'D', array($style6, 0, $style7, $style6));
        $pdf->Polygon(array(160,135,190,155,170,155,200,160,160,165), 'DF', array('all' => $style6), array(220, 220, 220));

// Polygonal Line
        $pdf->SetLineStyle(array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 164)));
        $pdf->PolyLine(array(80,165,90,160,100,165,110,160,120,165,130,160,140,165), 'D', array(), array());

// Regular polygon
        $pdf->Text(5, 169, 'Regular polygon examples');
        $pdf->SetLineStyle($style5);
        $pdf->RegularPolygon(20, 190, 15, 6, 0, 1, 'F');
        $pdf->RegularPolygon(55, 190, 15, 6);
        $pdf->RegularPolygon(55, 190, 10, 6, 45, 0, 'DF', array($style6, 0, $style7, 0, $style7, $style7));
        $pdf->RegularPolygon(90, 190, 15, 3, 0, 1, 'DF', array('all' => $style5), array(200, 220, 200), 'F', array(255, 200, 200));
        $pdf->RegularPolygon(125, 190, 15, 4, 30, 1, null, array('all' => $style5), null, null, $style6);
        $pdf->RegularPolygon(160, 190, 15, 10);
// Star polygon
        $pdf->Text(5, 209, 'Star polygon examples');
        $pdf->SetLineStyle($style5);
        $pdf->StarPolygon(20, 230, 15, 20, 3, 0, 1, 'F');
        $pdf->StarPolygon(55, 230, 15, 12, 5);
        $pdf->StarPolygon(55, 230, 7, 12, 5, 45, 0, 'DF', array('all' => $style7), array(220, 220, 200), 'F', array(255, 200, 200));
        $pdf->StarPolygon(90, 230, 15, 20, 6, 0, 1, 'DF', array('all' => $style5), array(220, 220, 200), 'F', array(255, 200, 200));
        $pdf->StarPolygon(125, 230, 15, 5, 2, 30, 1, null, array('all' => $style5), null, null, $style6);
        $pdf->StarPolygon(160, 230, 15, 10, 3);
        $pdf->StarPolygon(160, 230, 7, 50, 26);

// Rounded rectangle
        $pdf->Text(5, 249, 'Rounded rectangle examples');
        $pdf->SetLineStyle(array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0)));
        $pdf->RoundedRect(5, 255, 40, 30, 3.50, '1111', 'DF');
        $pdf->RoundedRect(50, 255, 40, 30, 6.50, '1000');
        $pdf->RoundedRect(95, 255, 40, 30, 10.0, '1111', null, $style6);
        $pdf->RoundedRect(140, 255, 40, 30, 8.0, '0101', 'DF', $style6, array(200, 200, 200));

// Arrows
        $pdf->Text(185, 249, 'Arrows');
        $pdf->SetLineStyle($style5);
        $pdf->SetFillColor(255, 0, 0);
        $pdf->Arrow(200, 280, 185, 266, 0, 5, 15);
        $pdf->Arrow(200, 280, 190, 263, 1, 5, 15);
        $pdf->Arrow(200, 280, 195, 261, 2, 5, 15);
        $pdf->Arrow(200, 280, 200, 260, 3, 5, 15);

// - . - . - . - . - . - . - . - . - . - . - . - . - . - . -

// ellipse

// add a page
        $pdf->AddPage();

        $pdf->Cell(0, 0, 'Arc of Ellipse');

// center of ellipse
        $xc=100;
        $yc=100;

// X Y axis
        $pdf->SetDrawColor(200, 200, 200);
        $pdf->Line($xc-50, $yc, $xc+50, $yc);
        $pdf->Line($xc, $yc-50, $xc, $yc+50);

// ellipse axis
        $pdf->SetDrawColor(200, 220, 255);
        $pdf->Line($xc-50, $yc-50, $xc+50, $yc+50);
        $pdf->Line($xc-50, $yc+50, $xc+50, $yc-50);

// ellipse
        $pdf->SetDrawColor(200, 255, 200);
        $pdf->Ellipse($xc, $yc, 30, 15, 45, 0, 360, 'D', array(), array(), 2);

// ellipse arc
        $pdf->SetDrawColor(255, 0, 0);
        $pdf->Ellipse($xc, $yc, 30, 15, 45, 45, 90, 'D', array(), array(), 2);


// ---------------------------------------------------------

//Close and output PDF document
        $pdf->Output('example_01.pdf', 'D');
        $this->data["code"] = 0;
        $this->data["msg"] = "生成成功";
        return $this->data;
    }

    public function dsad(){
        $test = "dsadsad";
        $imageurl  = "E:/xampp/htdocs/test/application/index/controller/gongzhang.png";
        $name = "宋杰"." ";
        $studentId = "201665110274"." ";
        $applytime = "2016年9月1日加入本协会";
        $vipId = "201611000001"." ";
        $time = "2 0 1 8 年 8 月 2 日"." ";
        $zhushi="该成员在协会表现良好，无违反校规校纪，无违反协会规章制度。";
        $pdf = new \TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
        $pdf->SetCreator(PDF_CREATOR);
        $pdf->SetAuthor('湖南网络工程职业学院计算机协会');
        $pdf->SetTitle('湖南网络工程职业学院计算机协会会员证明');
        $pdf->SetSubject('湖南网络工程职业学院计算机协会');
        $pdf->SetKeywords('计算机协会会员证明,湖南网络工程职业学院,会员证明,计算机协会');
        $pdf->SetHeaderData('', PDF_HEADER_LOGO_WIDTH, '湖南网络工程职业学院计算机协会', "官网地址：www . wyj  s j  x h . c o m", array(0, 64, 255), array(0, 64, 128));
        $pdf->setFooterData(array(0, 64, 0), array(0, 64, 128));
        $pdf->setHeaderFont(Array('stsongstdlight', '', PDF_FONT_SIZE_MAIN));
        $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
//        $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
        $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
        $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
        $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
        $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
        $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
        if (@file_exists(dirname(__FILE__) . '/lang/eng.php')) {
            require_once(dirname(__FILE__) . '/lang/eng.php');
            $pdf->setLanguageArray($l);
        }
        $pdf->setCellHeightRatio(2);
        $pdf->setFontSubsetting(true);
        $pdf->SetFont('stsongstdlight', '', 16, '', true);
        $pdf->AddPage();
        $pdf->Image($imageurl, 128, 175, 45, '', '', 'http://www.tcpdf.org', '', false, 300);
        //$pdf->setTextShadow(array('enabled'=>true, 'depth_w'=>0.2, 'depth_h'=>0.2, 'color'=>array(196,196,196), 'opacity'=>1, 'blend_mode'=>'Normal'));
        $html = <<<EOD
        <div style="text-align: center;font-size:30px;">计算机协会会员证明</div>

       <p  style="text-align: center">成员姓名：$name,学号：$studentId, 于 $applytime <span style="text-align:auto">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;会员号：$vipId</span></p>

       <p style="text-align: center">$zhushi</p>
       <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;特此证明。</p>
       <p></p>
       <p></p>
       <p></p>
        <p style="text-align: right">湖南网络工程职业学院计算机协会</p>
        <p style="text-align: right">$time&nbsp;&nbsp;&nbsp;&nbsp;</p>
        <p></p>
        <p></p>
        <div style="font-size:14px;">
            <span>证明编号：</span>
            <br>
            <span>附：湖南网络工程职业学院计算机协会获奖荣誉证书</span>
        </div>

EOD;
        $pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);
        $pdf->Output('example_001.pdf', 'D');
        $this->data["code"] = 0;
        $this->data["msg"] = "生成成功";
    }

    public function testclass(){
        $result = Db::name('clsinfo')->where(['grade'=>17])->select();
        foreach($result as $key=>$value){
            $result[$key]["grade"] = 18;
            unset($result[$key]['id']);
            Db::name('clsinfo')->insert($result[$key]);
        }

           $this->data["msg"] = "成功";
            $this->data['data'] = $result;
        return $this->data;
    }
}
